//*************** raw() 转义（即斜杠前面再加一个斜杠）*************/

String.raw`Hi\n${2 + 3}!`
// 实际返回 "Hi\\n5!"，显示的是转义后的结果 "Hi\n5!"

String.raw`Hi\u000A!`;
// 实际返回 "Hi\\u000A!"，显示的是转义后的结果 "Hi\u000A!"

// 如果原字符串的斜杠已经转义，那么String.raw()会进行再次转义。
String.raw`Hi\\n`
// 返回 "Hi\\\\n"

String.raw`Hi\\n` === "Hi\\\\n" // true

//********************* startsWith() endsWith() includes() **********************/

var str = `我叫张三我是程序员`

console.log(
  str.startsWith('我叫张三')				//判断字符串是不是这个开头的
)
console.log(
  str.endsWith('程序员')					//判断字符串是不是这个结尾的
)
console.log(
  str.includes('程序员')					//判断是否包含这个字符串
)


//********************* repeat()  **********************/

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""


//********************* padStart()，padEnd()  **********************/

//* ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度，会在头部或尾部补全。padStart()用于头部补全，padEnd()用于尾部补全。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'

//********************* trimStart()，trimEnd()  **********************/
/** 
 **  ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致，
 **  trimStart()消除字符串头部的空格，trimEnd()消除尾部的空格。它们返回的都是新字符串，不会修改原始字符串
*/
const s = '  abc  ';
s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

//********************* replaceAll()  **********************/

var str = 'aabbcc'.replaceAll('b', '_')         //替换字符串
// 'aa__cc'